// DAO/Impl/CourseStatsDaoImpl.java   // 只读视图实现
package com.hp.DAO.Impl;                         // 实现包

import com.hp.DAO.BaseDao;                       // 基类
import com.hp.DAO.CourseStatsDao;                // 接口：CourseStatsDao
import com.hp.Model.DTO.CourseStats;             // DTO：课程统计视图
import com.hp.Model.DTO.CourseStats;
import com.hp.Util.RowMapper;                    // 行映射器
import com.hp.Util.SimpleJdbcTemplate;           // JDBC 模板

import java.util.List;                    // List

/** 只读视图 v_course_stats 的 JDBC 实现 */
public class CourseStatsDaoImpl extends BaseDao implements CourseStatsDao {
    public CourseStatsDaoImpl(SimpleJdbcTemplate jdbc) { super(jdbc); } // 构造注入

    // RowMapper：ResultSet -> CourseStats DTO
    private static final RowMapper<CourseStats> M = rs -> CourseStats.builder()
            .courseId(rs.getLong("course_id"))                        // 课程ID
            .lessonCount(rs.getInt("lesson_count"))                   // 课时数量
            .totalDurationSec(rs.getLong("total_duration_sec"))       // 总时长（秒）
            .enrollCount(rs.getInt("enroll_count"))                   // 报名人数
            .build();                                                 // 构建 DTO

    @Override
    public List<CourseStats> listAll() {                              // 列出所有统计
        String sql = "SELECT course_id, lesson_count, total_duration_sec, enroll_count FROM v_course_stats"; // 视图查询
        return queryList(sql, M);                                     // 执行并返回列表
    }
}
